package server.fassade;

import java.util.*;

import server.ejb.beans.*;

@javax.ejb.Remote
public interface IFassade {
	/* create entities */
	public int createAngestellter(String name, String vorname);
	public int createBuchung(int FlugzeugID);
	public int createFluggesellschaft(String bezeichnung);
	public int createFlugzeug(String bezeichnung, int FluggesellschaftID, int FlugzeugTypID);
	public int createFlugzeugtyp(String bezeichnung, int gebuehr);
	public int createLotse(String name, String vorname);
	public int createParkposition(String bezeichnung);
	public int createStartLandebahn(String bezeichnung);

	/* get entity by id */
	public Angestellter getAngestellter(int mNr);
	public Buchung getBuchung(int ID);
	public Fluggesellschaft getFluggesellschaft (int ID);
	public Flugzeug getFlugzeug (int ID);
	public Flugzeugtyp getFlugzeugtyp (int ID);
	public Gebuehr getGebuehr(int gebID);
	public Konto getKonto(int ktoNr);
	public Lotse getLotse(int mNr);
	public Parkposition getParkposition (int ID);
	public Schichtplan getSchichtplan(int sNr);
	public StartLandebahn getStartLandebahn (int ID);
	public Urlaubsplan getUrlaubsplan(int urlNr);

	/* get list of all entities of a type */
	public Collection<Angestellter> getAngestellter();
	public Collection<Buchung> getBuchung();
	public Collection<Fluggesellschaft> getFluggesellschaft();
	public Collection<Flugzeug> getFlugzeug();
	public Collection<Flugzeugtyp> getFlugzeugtyp();
	public Collection<Gebuehr> getGebuehr();
	public Collection<Konto> getKonto();
	public Collection<Lotse> getLotse();
	public Collection<Parkposition> getParkposition();
	public Collection<Schichtplan> getSchichtplan();
	public Collection<StartLandebahn> getStartLandebahn();
	public Collection<Urlaubsplan> getUrlaubsplan();

	/* set new name for an entity */
	public void updateFlugzeug(int ID, String bezeichnung);
	public void updateFluggesellschaft(int ID, String bezeichnung);
	public void updateFlugzeugtyp(int ID, String bezeichnung);
	public void updateParkposition(int ID, String bezeichnung);
	public void updateStartLandebahn(int ID, String bezeichnung);
	public void updateKonto(int ktoNr, int stand);

	/* remove an entity */
	public void removeFlugzeug(int ID);
	public void removeFlugzeugtyp(int ID);
	public void removeFluggesellschaft(int ID);
	public void removeParkposition(int ID);
	public void removeStartLandebahn(int ID);
	public void removeKonto(int ktoNr);

	/* get entity list by search string */
	public Collection<Flugzeug> getFlugzeug(String bezeichnung);
	public Collection<Flugzeugtyp> getFlugzeugtyp(String bezeichnung);
	public Collection<Fluggesellschaft> getFluggesellschaft(String bezeichnung);

	/* other methods */
	public void setSollzeitLandung(int flugzeugID, String zeit);
	public void setParkpositionOcc(int flugzeugID, int parkpositionID);
	public void setParkpositionFree(int flugzeugID, int parkpositionID);
	public void setStartLandebahnOcc(int flugzeugID, int landebahnID);
	public void setStartLandebahnFree(int flugzeugID);
	public void setIstzeitLandung(int flugzeugID, String istZeit);
	public void startEinplanen(int startId, int fluggesellschaftId, int flugzeugId, String sollzeit);
	public void startBahnBelegungAndern(int startId, boolean isBahnFree);
	
	public boolean isDirty();
	
	public Map<Integer,Boolean> getParkingPositionSensors();	
	public Map<Integer,Boolean> getLandingLaneSensors();
	
	public void finishStartProcess(int flugzeugId);
	
}
